{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "import random\n",
    "import os\n",
    "import sys\n",
    "sys.path.append(\"../../\")\n",
    "from utils.story_util import Story,Stories"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "text = open(\"./valid_advantures_valid_translated.txt\",encoding='utf-8').read().strip()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "contents = []\n",
    "while text:\n",
    "    p1 = text.find(\"<| startoftext |>\")\n",
    "    if p1 == -1:\n",
    "        break\n",
    "    p2 = min(text.find(\"<| endoftext |>\"),text.find(\"<| endoftext>\"))\n",
    "    if p2 == -1:\n",
    "        break\n",
    "    p3 = text.find(\"<|正文结束|>\")\n",
    "    if p3 < p2 and p3 >= 0:\n",
    "        p2 = p3\n",
    "    contents.append(text[p1 + 20:p2])\n",
    "    text = text[p2+1:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "85"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(contents)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "contents[-26].count(\">\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(352, -1)"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p1,p2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "valid_content = [i for i in contents if i.count(\">\") > 2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "35"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(valid_content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "stories = []\n",
    "num = 0\n",
    "for one_content in valid_content:\n",
    "    num += 1\n",
    "    parags = one_content.split(\">\")\n",
    "    one_story = Story(parags[0],str(num))\n",
    "    for one_parag in parags[1:]:\n",
    "        p1 = one_parag.find(\"\\n\")\n",
    "        action = one_parag[:p1]\n",
    "        result = one_parag[p1 + 1:]\n",
    "        if action.find(\"你说\") != -1:\n",
    "            one_story.add_action(action.replace(\"你说\",\"\"),\"说\",result,action)\n",
    "        else:\n",
    "            one_story.add_action(action,\"做\",result,action)\n",
    "    stories.append(one_story)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<start>\n",
      "故事名称：\n",
      "5\n",
      "故事背景：\n",
      "抓住刀刃，迅速环顾四周，然后冲向火山口的边缘，冲向离你左侧最近的爆破墙。附近一场爆炸将大块的泥土和石头以及一具尸体的手臂喷射到空中。你惊恐地看着附属物扑通一声掉到人行道上。  从你的左边，三个图里克战士冲向一个受伤的商人，用他们邪恶的带刺弯刀不断地刺伤他，然后洗劫了他的尸体。  在你的右边，你可以看到另一栋建筑，大约有20英尺宽，有一些裸露的地面。  你…吗：\n",
      "--------------------\n",
      "动作：\n",
      "做\n",
      "你去下一栋楼？\n",
      "结果：\n",
      "你跑到下一栋楼，一切看起来都很安全。没有人经过，街上到处都是尸体。也许先锋队已经过去了。深吸一口气，你往外看，感觉不到任何人。  你慢慢地站起来，朝下一栋楼走去。尽管你穿过一片20英尺宽的地方，但你还是安全地到达了下一站。在拐角处偷看，你会看到一个可怜的景象，一个金发小男孩在他父母的尸体上哭泣，尸体散落在瓦砾中，瓦砾曾经是他的建筑。一块燃烧着的巨石撞击鹅卵石发出刺耳的尖叫声，蒸发了你视野中的一切，把你击倒在地。  当你站起来的时候，你听到另一个爆炸声从后面传来。  当你重新站起来后，你就从男孩所在的地方开始。只剩下一个冒烟的火山口，周围环绕着一圈火焰。尽管你有着正常的坚忍性格，眼泪还是会从你的脸颊滑落。握紧你的刀刃，你强迫自己艰难前行。  向上三条街，你注意到一场交火正在进行。三支埃斯图军队蜷缩在一堵墙后。每个人都有一把弩，第四个士兵死了，脖子上插着一个螺栓。你蹲着朝他们的位置跑去，跪在军士旁边，问道：“军士情况如何？”。  他转过身，几乎要去拿他的剑，因为他不认识你，但他说：“雇佣军？”  你点了点头，他咕哝道：“我以为你们现在都逃了，见鬼，如果这不是我的家，我早就逃了。我想我很快就会死在这些旧墙里了。”  一个弩箭击中了墙壁，他又回到了战斗中。”好吧，我们正试图到达北边的防御阵地，但是该死的特瑞克斯把我们切断了。一个排大小的分队，只剩下我们，我们被切断了与主要集团。如果你能发射弩，欢迎你的帮助。见鬼，即使你做不到，你至少可以向那些混蛋开枪。”  你点点头，拿起弓弩，这是一把你非常熟练的弩，然后装上箭。”“他们在哪里？”你问。  他用一个插销在泥土里快速画了一张图，然后说，“我们在这里，他们在那边的护堤后面。我敢肯定在西边有个狙击手。不好的是，虽然我们看不到他，但他肯定能看到我们，而且他是个绝顶聪明的人。一枪干净利落地干掉了艾维，斯皮纳就在那边。”他指着15英尺外的一具埃斯特里恩尸体，背后插着一个螺栓。  护堤后面的那些白痴很差劲，但是他们用压制火力把我们钉住了，不能抬起头来不害怕拿螺栓，尽管狙击手，他才是真正的挑战。我们干掉他，我们可以侧翼进攻。如果他不死，我们就会陷入僵局。”  把弓弩加到你的库存中。  你可以考虑以下选项：   \n",
      "梗概：\n",
      "你去下一栋楼？\n",
      "--------------------\n",
      "动作：\n",
      "说\n",
      "“掩护我，我来对付狙击手。”\n",
      "结果：\n",
      "你同意留下来，但你必须先弄清楚狙击手在哪里，然后才能把他干掉。”嘿，士兵，让我借一下那个盾牌。“你抓住他的小金属盾牌，迅速把它举到你们都蹲在后面的小墙上面。果然，分心带来了一个小冰雹螺栓从你的前线那里，土耳其士兵盘踞，但他们错过了。然而，从你的右侧，一个螺栓猛击盾牌，将它从你手中击落，并在盾牌倒下前将它滚向你的左侧约10英尺。  “好的，士兵们，我知道狙击手在哪里。我要去瓦砾堆旁边的那堵小砖墙，当我说走的时候，我要你用你的弩向图里克的杂种们开火，直到我准备好为止。”  士兵们点头，锁上弓弩，蜷缩起来准备开火。  你数到三，然后开始向砖墙低蹲冲刺。与此同时，埃西特兰人把他们所有的火力都射向了泰瑞克士兵，他们在战乱结束前保持清醒。然后他们回击埃斯特里安人，你向右转向墙。你知道接下来的五英尺会很关键。  考验你的运气：     \n",
      "梗概：\n",
      "你说“掩护我，我来对付狙击手。”\n",
      "--------------------\n",
      "动作：\n",
      "做\n",
      "如果你的名字以B，E，F，J，P或Y开头。。。\n",
      "结果：\n",
      "当你直接在肋骨上插上一个螺栓时，你会躲开，闪避，冲刺，并且没有几秒钟的时间往家里跳。你不由自主地撞到砖头上，伤得很重，但你却蹦蹦跳跳地爬到墙后靠在墙上。  你现在有2耐力（3分之一），如果你的耐力降到0，你就死定了。  呼吸困难，你蹲下并装上你的弩，如果这是你做的最后一件事，你会得到那个狗娘养的。在快速祈祷之后，你从墙上转出来，朝着镜头的方向扫视建筑物，就像你在安全的墙上转回来一样快。一毫秒后，一个螺栓砸进了你刚刚栖息的瓦砾中。  你朝右上角的高塔窗户精神上俯冲过去。然后你绕过墙上的小孔瞄准。在里面你看到墙上的运动，你画了一个珠子。吸气。呼气。。。开火！  门闩在空中飞扬，你听到一声轻微的喘息声，然后一个人从窗户里摔了出去，掉到下面四层楼高的鹅卵石上。士兵们欢呼起来，你迅速向他们竖起大拇指。  现在来对付土耳其士兵。  你沿着墙移动到图里克十字弓的侧面，小心不要发出噪音或提醒他们注意你的位置。最后，你不能再往前走了，你可以探出你的头看看他们在哪里，有多少。你注意到五个人，每个人都在装弩。决定让它变成四个，你向最暴露的士兵开火，然后躲回墙后。一声尖叫回报了你的努力，土耳其士兵的喊叫表明他们现在有狙击手要对付。  你重新装好子弹，准备再打一枪。转身，瞄准，开火，然后躲开。一声尖叫伴随着那动作，你滑下墙去和中士交流。他正忙着指示他的士兵小心瞄准，但你注意到他的目光和动作，让他派另一名士兵到你的位置去。  你滑回到狙击手的位置，在你和士兵之间，躺下掩护火力，这时一个士兵冲向你躲在后面的墙。你现在有敌人的侧翼了。他看着你，枪栓伸出你的肋骨，呼气，但你的动作让他移动到角落。  他迅速看了一眼，看到一个土里克医生正在照顾他们的两个伤员，而两个士兵向你留下的士兵开火。你点点头，然后翻身瞄准医生，用一个能打碎他的头骨的螺栓把他救了出来。和你在一起的士兵跑到另一面墙的一边，在被围困的图里克战士的后面，中士和他的士兵继续从前面开火。  几秒钟后，你和你的士兵击落了最后两名图里克弩手。你来回挥舞你的手表示停火，你们都从废墟散落的战场上起来。中士和他的部下急忙向你道贺，“没有你及时的干预，我不知道我们会做什么。我是雷纳尔中士，这些士兵是科维斯和利克。我猜你是那个被他们称为“西尔弗”的女孩。我听说你很了不起，但很明显那些传说对你毫无意义。”  他看了看你身上的插销，畏缩着说：“看起来你为球队拿了一个，不幸的是，我们的医生躺在那里，他身上有一个插销，所以我要包扎起来，尽量保持无菌。我们正前往一个防御阵地，我们认为有一些友军驻扎在那里，如果你愿意的话，欢迎你来坐车。四个比一个好多了。”\n",
      "梗概：\n",
      "如果你的名字以B，E，F，J，P或Y开头。。。\n",
      "--------------------\n",
      "动作：\n",
      "说\n",
      "“谢谢你让我陪着……”\n",
      "结果：\n",
      "你和部队快速而安静地穿过小巷、小巷和城市的主要街道。有好几次你必须拔剑和敌人战斗，逃离其他的图里克团体，甚至是游荡在城市里的不死生物，然而，在你向安全的最后一步推进之前，你都会找到一个藏身的地方。您决定等到天黑后再继续前进。\n",
      "梗概：\n",
      "你说“谢谢你让我陪着……”\n",
      "<end>\n"
     ]
    }
   ],
   "source": [
    "one_story = random.choice(stories)\n",
    "print(one_story.to_str())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(\"processed_translated_story_valid.txt\",'w',encoding='utf-8') as whdl:\n",
    "    for one_story in stories:\n",
    "        whdl.write(one_story.to_str())\n",
    "        whdl.write(\"\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "stories = Stories(\"../advanture_translated/processed_translated_story.txt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<start>\n",
      "故事名称：\n",
      "18\n",
      "故事背景：\n",
      "你把Kyros撞倒在地，双手捂住他的喉咙。他开始逐渐退出，钻研现实，而你努力让他脚踏实地。你们两个传送到竞技场的中间，而守卫的三名角斗士立即拉屎并争夺他们的枪支。再次脱离现实，你发现自己在一个空荡荡的走廊里。你知道他会在亚空间传送门开始形成时继续传送，直到你们都被搞砸了。你需要做点什么。  “战斗！战斗，卡斯！” 梅利奥达斯咆哮。  感觉他开始逐渐消失，你很快就开始让你和他飞过亚空间再次传送，这样你就可以选择下一个目的地，试图在它杀死你和船上的其他人之前结束这个循环.  是时候选择一个目的地了。\n",
      "--------------------\n",
      "动作：\n",
      "做\n",
      "在突变体出没的地区\n",
      "结果：\n",
      "你传送，然后发现自己在飞船上众多被变异人出没的坑洞中的一个。这是您真正知道的少数几个之一，因此它是您的传送目的地，因为您与一群独眼乌鸦战斗通过它来为叛变者保护它。在这里，成群的半智能变种人在监视器上工作，监视器设计得非常简单，一个蹒跚学步的孩子也能使用，这是幸运的，因为它需要这些白痴的最大智力努力。航站楼控制着空中管制，不是为了任何重要的人，而是为了随时可以使用的另一组变异工人。  “对对对！” 梅利奥达斯哭了。“完美，卡斯！完美！”  Kyros 哽咽的尖叫声很快通知了突变体你的存在。当它们开始蜂拥而至时，它们的原始本能立即接管了你。触手、爪子、手、脚、牙齿、尖牙、角和刺都会攻击你们。凯罗斯尖叫起来，他的注意力瞬间被打破，亚空间流在他周围消散。你滚开他们的攻击，带着一股精神能量迅速飞离他们的控制。此部分的重要作用意味着您可以看到维护电梯。你朝它跑去，抬起大门并在它下面滚动，你的手向上按下带有向上箭头的红色电梯按钮。由于黑暗诸神、神皇或宇宙本身的恩典，电梯立即做出反应。  Kyros 尖叫起来，因为变种人开始撕裂他。他的能量一直在与你战斗并试图打开亚空间传送门，但在电梯将你从他的视线中移开之前，他已经耗尽了精力，无法反击，无法集中注意力，也无法做任何事情，他发出一声可怜的尖叫。  你深吸一口气，靠在墙上。那个狗屎让你失去了很多。你听到远处 Kyros 的尖叫声，然后微笑起来。这有一些隐约的诗意。凯罗斯，一个声称捍卫人民权利的人，将人类从压迫中解放出来，摆脱了对灵能者、变种人和其他人的偏见，这些偏见与帝国对人类的完美看法不同，被他以变种人身份征服的变种人杀死并被奴役。美丽的。  你将头靠在墙上，深呼吸。你需要休息一下。\n",
      "梗概：\n",
      "在突变体出没的地区\n",
      "--------------------\n",
      "动作：\n",
      "做\n",
      "你回到你的房间\n",
      "结果：\n",
      "你走进卧室，立刻瘫倒在床上。当您将头靠在枕头上并闭上眼睛时，您想知道自己怎么可能睡着。  “卡斯！” 一个声音说。  你翻了个身，看到 Fay 站在门口。她的肘部缠着沾满鲜血的绷带，手里拿着一把血淋淋的弯刀。  “什么？” 你问，费伊微笑着。  “所以，这就是你一直藏身的地方，”她说着向你走来。  “躲起来？我真的刚到这里。我杀了 Kyros，”你补充道，试图漠不关心。  “刚到这里？你已经睡了几个小时了！” 她说。“我们清理了剩余的 Kyros 忠诚者。大多数人在 Kyros 被杀后才投降。”  “找到尸体了？” 你问。  “我们实际上希望你能帮忙。我们找不到。他在哪里被杀？”  “你怎么知道他死了？” 你问，揉着眼睛努力保持清醒。  “一些混沌灵能者感觉到他强大而明亮的灵魂消失了。我以为你杀了他。他们说他们仍然感觉到你的存在，谢谢......不管是谁在照顾我们。我的一部分认为他们错了直到我真的在这里找到你。发生了什么事？  “我们最终来到了一个被变异人占据的区域。他们把他撕成了碎片。区域……3C-QP……操，我不知道。我最终会记住的。”  “菲指挥官，报到！” 收音机里传来噼啪声。  “我找到了他，”费伊说。“给我几分钟，我们会聚在一起寻找幸存的忠诚者。”  费伊把收音机扔到一边，对你微笑。她坐在床边，把弯刀扔在地板上。  “所以，我们做到了。我们杀死了凯洛斯！” 她笑了。  “我们做到了，”你微笑。  “我们离一个神奇的、残废的 Uwais 和一个害怕的、赤身裸体的 Azajaja 相去甚远，”她笑着说。  “该死的。我们需要和其他人见面。”  “稍后，Karth。睡一觉。我需要做一些工作。我们明天早上见面。”  “很高兴，”你说，你的头撞在枕头上，Fay 笑着抓起刀片走出门。  是时候睡觉了。\n",
      "梗概：\n",
      "你回到你的房间\n",
      "--------------------\n",
      "动作：\n",
      "做\n",
      "新的黎明...\n",
      "结果：\n",
      "新的曙光...  你漫步到桥上，揉揉眼睛里的睡眠。其他人已经在那里，盯着窗外一颗巨大的黄矮星。Drake Amadeus 坐在主座位上，不耐烦地敲击着座位。两个部落站在他的两侧，既是保镖又是监狱看守。  往窗外看的其他人转过头来看你。他们立即爆发出热烈的掌声，你向前走时微笑。海耶斯船长表示敬意地点点头，德奇发出一声响亮的叮当声，试图用作为他手臂的金属尖刺拍手，而埃利奥斯微笑着，立即抓住机会把手放在你的肩膀上，它立即沿着你的胸膛伸向你的生殖器直到你轻轻推开他。罐头鼓掌的声音来自扬声器，大概来自 Primus，让你发笑。伊丽莎白也鼓掌，凯恩困惑地盯着鼓掌的人们，然后耸了耸肩，加入了轰隆隆的雷声，双胞胎为双胞胎鼓掌。Fay 紧紧地拥抱着你，然后你才让大家安静下来。  “你干掉了 Kyros，”伊丽莎白说。“感人的。”  “我不再需要赞美了，”你说。“我们需要讨论一下 hsip 会变成什么样子。”  “当你活得和我一样长时，你就会知道要珍惜美好的时光，而不是匆匆忙忙地向前冲，”德奇说。  “我们有一艘格洛丽安娜级战舰、一支军队和绝对的自由。世界是……不，银河系是我们的，”费伊微笑着说。  你凝视窗外，沐浴在温暖的金色阳光下，自从 Kyros 登陆你的星球以来，你第一次感到完全自由。  银河系是你的。\n",
      "梗概：\n",
      "新的黎明...\n",
      "<end>\n"
     ]
    }
   ],
   "source": [
    "print(random.choice(stories.stories).to_str())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "304"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(stories.stories)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 28M raw data process"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "text = open(\"./text_advanture_trans.txt\",'r').read()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [],
   "source": [
    "textsps = text.split(\"\\n>\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [],
   "source": [
    "contents = []\n",
    "for one_sp  in textsps:\n",
    "    tmp = [i for i in one_sp.split(\"\\n\") if i.replace(\" \",\"\")]\n",
    "    contents.append(tmp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 362,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7074"
      ]
     },
     "execution_count": 362,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(contents)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 569,
   "metadata": {},
   "outputs": [],
   "source": [
    "small_contents = [i for i in contents if len(i) < 20]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 570,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4304"
      ]
     },
     "execution_count": 570,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(small_contents)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 571,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 572,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[' 你拒绝了她的提议',\n",
       " '“不，”你说。“我真的应该完成陷阱。”',\n",
       " '“哦，好吧，”罗斯说。',\n",
       " '“不过，我会在附近见到你，”你说。',\n",
       " '“是的，我想是的，”罗斯说。“我真的该走了。我妈妈会找我的。”',\n",
       " '“好的。再见，罗斯，”',\n",
       " '“再见，雅各布，”罗斯说，然后冲进树林。',\n",
       " '你看着她离开，然后转身设置其余的陷阱。']"
      ]
     },
     "execution_count": 572,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random.choice(small_contents)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 573,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 741,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<AxesSubplot:title={'center':'0'}>]], dtype=object)"
      ]
     },
     "execution_count": 741,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.DataFrame([len(i) for i in small_contents]).hist(bins=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 791,
   "metadata": {},
   "outputs": [],
   "source": [
    "tmp_data = []\n",
    "for i in range(len(contents)):\n",
    "    nowcontent = contents[i]\n",
    "    prevcontents = []\n",
    "    j = i - 1\n",
    "    while len(''.join(prevcontents)) < 500 and j >= 0:\n",
    "        prevcontents += contents[j]\n",
    "        j = j - 1\n",
    "    if(len(nowcontent) < 1000):\n",
    "        tmp_data.append([prevcontents,nowcontent])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 803,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[' 第一次死亡...',\n",
       "  '就在布里杰堡外面，一个名叫卢克·哈洛兰的年轻人加入了你们的队伍：他死于肺结核，被乔治和雅各布·唐纳带走，并被允许乘坐他们的马车。在盐湖的岸边，他突然晕倒并因病去世。任何人都做不到，但他的死给党带来了黯淡的情绪。第二天，他被埋葬在盐湖岸边另一位在前往加利福尼亚的途中去世的定居者的坟墓。',\n",
       "  '迫于压力，您将在 9 月进入盐沙漠，那里炎热干燥，湿气重。马车艰难地穿越沙漠，拉动它们的牛在努力拉动马车时消耗了大量的水。詹姆斯·里德 (James Reed) 被迫放弃他的两辆马车，乔治·唐纳 (George Donner) 和另一位名叫路易斯·凯塞伯格 (Louis Keseberg) 的凶猛定居者都不得不放弃他们的一辆马车。整列马车被拉长了好几英里，带着马车的牛群被分开，其中许多人死了。不知何故，你设法让你的马车保持移动，让你的牛活着，但这种经历是噩梦般的。',\n",
       "  '最后，您和您的同伴穿越沙漠，在泉水扎营几天，这些时间都在围捕丢失的牛，从废弃的马车上找回东西，直到将近 9 月中旬，聚会才准备好继续。穿越沙漠杀死了许多牛，也花费了党的许多物资。大多数定居者，尤其是詹姆斯·里德，现在担心他们可能没有足够的食物来一路到达加利福尼亚。',\n",
       "  '一个计划很快就制定了：查尔斯·斯坦顿和另一位名叫威廉·麦卡琴的定居者（一个巨人，带着妻子和小女儿前往加利福尼亚）自愿骑着快马前往加利福尼亚的第一个贸易站萨特堡，收集新鲜补给品并带回派对。行动迅速，他们可能会在短短一个月内回来。如果你愿意，你可以和他们一起骑车去加利福尼亚，或者你可以继续和唐纳派对一起旅行。',\n",
       "  '你做什么工作？'],\n",
       " [' 你留在唐纳党',\n",
       "  '在查尔斯·斯坦顿和威廉·麦卡琴离开后，情况并没有好转。虽然你离开了沙漠印第安人现在开始在晚上从派对上偷马，脾气变得很差。随着食物变得稀缺和饥饿开始蔓延，定居者之间开始发生争吵。这种情况不可避免地在 10 月份以暴力达到高潮，当时两辆马车在爬上艰难的山丘时被卡住。',\n",
       "  \"而爬山，迫使詹姆斯·里德你的货车卡在岩石“小号车和其他属于富兰克林格雷夫斯（一个友好的人与他的妻子，7个子女和女婿旅行）碰撞。里德大发雷霆，咆哮道：“你该死的笨蛋，你别挡我的路！”“闭上你的嘴垃圾桶或我'会关闭它为你”树皮背约翰·斯奈德，一个脾气暴躁的驱动程序格雷夫斯工作。\",\n",
       "  '这时里德彻底发脾气，从马车上跳了下来，大步走向斯奈德，斯奈德倒在地上迎接他。您吃惊地看见一个长刃屠夫“的刀下里德闪闪发光”的手并没有谋杀他的眼睛。',\n",
       "  '你做什么工作？']]"
      ]
     },
     "execution_count": 803,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random.choice(tmp_data)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "<|正文结束|> <|文本结束|> <|startoftext|> <|endoftext|>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 851,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7074"
      ]
     },
     "execution_count": 851,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(tmp_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 869,
   "metadata": {},
   "outputs": [],
   "source": [
    "specials = ['<|正文结束|>','<|文本结束|>','<|startoftext|>','<|endoftext|>','<| startoftext |>','<| endoftext |>']\n",
    "def replace_contents(content):\n",
    "    for i in specials:\n",
    "        content = content.replace(i,\"\")\n",
    "    return content"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 926,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data = []\n",
    "for prev,content in tmp_data:\n",
    "    tmp_prev = []\n",
    "    for i in prev:\n",
    "        i = i.strip()\n",
    "        replaced = replace_contents(i)\n",
    "        tmp_prev.append(replaced)\n",
    "    tmp_action = content[0].strip().replace(\"你你\",\"\").replace(\"罢工\",\"出手\").replace(\"教练\",\"马车\")\n",
    "    tmp_content = []\n",
    "    for i in content[1:]:\n",
    "        i = i.strip()\n",
    "        replaced = replace_contents(i)\n",
    "        tmp_content.append(replaced)\n",
    "        if(i != replaced):\n",
    "            break\n",
    "    if(len(tmp_content) < 15):\n",
    "        train_data.append({\n",
    "            \"previous\":tmp_prev,\n",
    "            \"action\":tmp_action,\n",
    "            \"result\":tmp_content})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 927,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4766"
      ]
     },
     "execution_count": 927,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(train_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1001,
   "metadata": {},
   "outputs": [],
   "source": [
    "aa = random.choice(train_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1007,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'{\"previous\": [\"你对抗\", \"你拿着你找到的证据面对金发女郎，她告诉你一切。她是一个吸血鬼，她希望改变你，这样她就不再孤单了。她还告诉你相信她，她的名字是莎拉。她给了你死亡的选择和永生的选择。\", \"你尽可能快地逃跑\", \"不幸的是，你不能轻易逃离吸血鬼。金发女郎跟踪你，抽干你的血，折断你的脖子。你作为人类死去，不会再复活。\", \"翻阅这本书的书名后，你会发现它们都是关于吸血鬼的神话传说。然而，有一个让你眼前一亮，它被标记为“吸血鬼日记”，它吸引了你。翻开日记，你会发现它提到了一家夜总会和一个容易上当的家伙，他的皮线很俗气，试图进入主人的内裤。然后，日记的主人详细说明了他们想在吸干他们后如何肢解这个人。你惊恐地发现所有的相似之处，并发现你只有两种选择，你可以面对在日记底部签名的“莎拉”，或者你可以逃命。你选哪个？\", \"你搜索书柜\", \"翻开书名，你会发现它们都是关于吸血鬼的神话和传说。然而，有一个让你眼前一亮，它被标记为“吸血鬼日记”，它吸引了你。翻开日记，你会发现它提到了一家夜总会和一个容易上当的家伙，他的皮线很俗气，试图进入主人的内裤。然后，日记的主人详细说明了他们想在吸干他们后如何肢解这个人。你惊恐地发现所有的相似之处，并发现你只有两种选择，你可以面对在日记底部签名的“莎拉”，或者你可以逃命。你选哪个？\"], \"action\": \"你死了\", \"result\": [\"她杀了你，你就死了，你也不能从坟墓里复活。\"]}'"
      ]
     },
     "execution_count": 1007,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "str(aa).replace('\\'','\\\"')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 929,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 941,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(\"./truncated_advanture_train.json\",'w') as whdl:\n",
    "    json.dump(train_data[:4500],whdl)\n",
    "\n",
    "with open(\"./truncated_advanture_valid.json\",'w') as whdl:\n",
    "    json.dump(train_data[4500:],whdl)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
